English 中文(简体)
SWI-Prolog tokenize_atom/2 supplement?
原标题:SWI-Prolog tokenize_atom/2 replacement?

我需要做的是打破原子。 E.g.:

tokenize_string( Hello, World! , L).

将统一<代码>L=[Hello , , , , World , !]。 实际上,作为<条码>表示_atom/2。 但是,当我试图使用<条码>,以非排他性文字表示丧失。 是否有普遍替代,或我如何书写? 提前感谢。

最佳回答

当然,你可以写一下自己的灵活性。 例如,我可以从我的算术词中向各位展示一种灵活性。

:- use_module(library(http/dcg_basics)).

%
% lexer
%

lex([H | T]) -->
    lexem_t(H), !,
    lex(T).

lex([]) -->
    [].

lexem_t(L) --> trashes, lexem(L), trashes.

trashes --> trash, !, trashes.
trashes --> [].

trash --> comment_marker(End), !, string(_), End.
trash --> white.

comment_marker("*)") --> "(*".
comment_marker("*/") --> "/*".

hex_start --> "0X".
hex_start --> "0x".

lexem(open) --> "(".
lexem(close) --> ")".
lexem(+) --> "+".
lexem(-) --> "-".
lexem(*) --> "*".
lexem(/) --> "/".
lexem(^) --> "^".
lexem(,) --> ",".
lexem(!) --> "!".

lexem(N) --> hex_start, !, xinteger(N). % this handles hex numbers
lexem(N) --> number(N). % this handles integers/floats
lexem(var(A)) --> identifier_c(L), {string_to_atom(L, A)}.

identifier_c([H | T]) --> alpha(H), !, many_alnum(T).

alpha(H) --> [H], {code_type(H, alpha)}.
alnum(H) --> [H], {code_type(H, alnum)}.

many_alnum([H | T]) --> alnum(H), !, many_alnum(T).
many_alnum([]) --> [].

如何运作:

 ?- phrase(lex(L), "abc 123 привет 123.4e5 !+- 0xabc,,,"), write(L).
[var(abc), 123, var(привет), 1.234e+007, !, +, -, 2748, (,), (,), (,)]
问题回答

暂无回答




相关问题
Split Strings and arrange db to display products in PHP

I m new in php. Could you please help me to find the way to properly arrange following task: Table "Products" id - details 1 - 1-30,2-134:6:0;;2-7:55:0;;1-2,2-8:25:0 - where this string can be ...

Lucene Query WITHOUT Operators

I am trying to use Lucene to search for names in a database. However, some of the names contain words like "NOT" and "OR" and even "-" minus symbols. I still want the different tokens inside the names ...

Google-like search query tokenization & string splitting

I m looking to tokenize a search query similar to how Google does it. For instance, if I have the following search query: the quick "brown fox" jumps over the "lazy dog" I would like to have a ...

Recursive woes - reducing an input string

I m working on a portion of code that is essentially trying to reduce a list of strings down to a single string recursively. I have an internal database built up of matching string arrays of varying ...

Tokenize from a textfile reading into an array in C

How do you tokenize when you read from a file in C? textfile: PES 2009;Konami;DVD 3;500.25; 6 Assasins Creed;Ubisoft;DVD;598.25; 3 Inferno;EA;DVD 2;650.25; 7 char *tokenPtr; fileT = fopen("DATA2....

tokenize a string keeping delimiters in Python

Is there any equivalent to str.split in Python that also returns the delimiters? I need to preserve the whitespace layout for my output after processing some of the tokens. Example: >>> s="...

C tokenize polynomial coefficients

I m trying to put the coefficients of polynomials from a char array into an int array I have this: char string[] = "-4x^0 + x^1 + 4x^3 - 3x^4"; and can tokenize it by the space into -4x^0 x^1 4x^3 ...

Approaching Text Parsing in Scala

I m making an application that will parse commands in Scala. An example of a command would be: todo get milk for friday So the plan is to have a pretty smart parser break the line apart and ...

热门标签