小编Ale*_*der的帖子

ANTLR - 允许关键字之间的任何字符

我想为一种简单的语言定义语法.

该语言允许某种分配.

keyworda: this is the 1 keyword-A
keywordb: this is the second keywordb
...
Run Code Online (Sandbox Code Playgroud)

问题是,在关键字和':'任何char之后应该是可能的(关键字也是)

我尝试过很多东西,但我认为我仍然没有进入词法分析器和解析器思考...

我最后的想法失败了:

rule 
  :  'keyworda' ':' anychar* 'keywordb' ':' anychar* EOF 
  ;

anychar
  :  .
  ;

NEWLINE
  :  ('\r'? '\n') {$channel=HIDDEN;}
  ;
Run Code Online (Sandbox Code Playgroud)

编辑

首先:谢谢你的回答!

我通读了手册并查看了scott stanchfield的教程.

问题是,我没有得到"anychar"的东西!

你是对的,我上面提到的语法错了,因为我很着急.

这是一个更好的尝试.问题仍然是,Tokenizer在定义ala中识别例如keyworda

keyworda : this is keyworda.
keywordb : this is another key!
...
Run Code Online (Sandbox Code Playgroud)

语法:

rule
    :   KEYA ':' STRING_LITERAL* NEWLINE
        keybdefinition*
         EOF
    ;

keybdefinition
    :   KEYB ':' STRING_LITERAL* NEWLINE
    ;


KEYA: 'keyworda';
KEYB:'keywordb'; …
Run Code Online (Sandbox Code Playgroud)

antlr keyword antlrv3ide

4
推荐指数
1
解决办法
9988
查看次数

Objective C - respondsToSelector用于动态属性

我目前面临的问题是检查对象(NSManagedObject)的属性是否存在.

不幸的是方法

[[MyObject class] respondsToSelector:@selector(myProperty)];
Run Code Online (Sandbox Code Playgroud)

总是返回NO.

我认为这是因为CoreData生成的属性是一个新的样式属性ala

@property (nonatomic, strong) NSString *myProperty
Run Code Online (Sandbox Code Playgroud)

那么任何想法如何解决这个问题?

我非常感谢你的所有建议;)

提前致谢!亚历克斯

objective-c ios dynamic-properties respondstoselector

4
推荐指数
1
解决办法
5621
查看次数

Objective C - 带有umlaute到NSString的char

我使用的是libical,它是一个解析icalendar格式的库(RFC 2445).
问题是,在位置字段中可能存在一些德语变音符号.
现在libical为每个值返回一个const char*,如:

"K\303\203\302\274nstlerhaus in M\303\203\302\274nchen"  
Run Code Online (Sandbox Code Playgroud)

我尝试将其转换为NSString:

[NSString stringWithCString:icalvalue_as_ical_string_r(value) encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

Künstlerhaus in München
Run Code Online (Sandbox Code Playgroud)

有什么建议?我将不胜感激任何帮助!

cocoa-touch objective-c diacritics ios libical

4
推荐指数
1
解决办法
1312
查看次数

UINavigationBar - 更改UIBarButtonItem位置

我在我的应用程序中使用UINavigationController及其栏.现在我想更改leftBarButtonItem和rightBarButtonItem位置.我希望它们位于不同的x和y位置,具有自定义的高度和高度.

但问题是,更改框架不会改变barButtonItem的任何内容.我现在不知道为什么,但框架总是被重置为其原始坐标.

这是我在viewWillAppear中调用的代码:

UINavigationItem *navItem = [[self.navigationBar items] lastObject];

UIView *rightview = [[UIView alloc] initWithFrame:CGRectMake(0,0,66,30)];
rightview.backgroundColor = [UIColor blueColor];

//add custom view
UIBarButtonItem *search = [[UIBarButtonItem alloc] initWithCustomView:rightview];
navItem.leftBarButtonItem = search;
Run Code Online (Sandbox Code Playgroud)

这是结果

视图不是从0/0开始,例如x位置是5px而不是0.

有关如何解决此问题的任何建议?

objective-c uitoolbaritem ios

4
推荐指数
1
解决办法
7508
查看次数

Objective C时间戳不等于java时间戳

我正在开发一个从后端接收数据的应用程序.问题是,日期在我的应用程序中无法正常工作.所以我最后比较了cocoa生成的时间戳和我的java后端生成的时间戳.

是否有任何理由认为java比目标c更长?

刚比较:

java的

1318226845471

可可

1318226841

我正在生成可可时间戳:

[[NSDate date] timeIntervalSince1970]
Run Code Online (Sandbox Code Playgroud)

有什么建议?我将不胜感激任何帮助!

先谢谢你,Alex

timestamp nsdate nstimeinterval

3
推荐指数
1
解决办法
2418
查看次数

Apache HTTP Client javax.net.ssl.SSLPeerUnverifiedException:peer未经过身份验证

我们正在使用tomcat和jersey开发应用程序.
在此Web应用程序中,我们需要连接到https Websitea valid,而不是已过期certificate.如果我通过我的Chrome浏览器在本地连接到本网站,一切正常!不幸的是,带有我们webapp的tomcat服务器引发了异常.我们使用Apache HttpClient (4.0)连接到https网站:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:371)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:126)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
Run Code Online (Sandbox Code Playgroud)

服务器证书绝对有效且来自thawte.三种不同的在线工具成功验证了证书.
Openssl也有一个问题,并向我展示三个证书,但抛出一个简单的错误:

Verify return code: 20 (unable to get local issuer certificate)
Run Code Online (Sandbox Code Playgroud)

openssl的问题似乎是它使用了错误的路径/usr/lib/ssl而不是/etc/ssl/certs.如果我使用指向正确路径的CApath参数,openssl工作正常,那么这可能是httpClient的问题吗?

所以我们的默认客户端代码非常简单:

    client = new DefaultHttpClient();
    response = client.execute(url); //this throws the exception
    EntityUtils.consume(response.getEntity());
Run Code Online (Sandbox Code Playgroud)

通过实现自定义TrustedManager,不允许任何证书!我读到,有些CA不是JDK/JRE的一部分,因此它的证书应该手动导入keystore或使用自定义的证书,但是thawte是一个众所周知的CA,它不应该在默认情况下工作吗?

编辑

我确实在catalina.sh中设置了javax.debug属性,以便我有关于该问题的更多信息:

http-bio-8080-exec-1, handling exception: javax.net.ssl.SSLHandshakeException: 
sun.security.validator.ValidatorException: …
Run Code Online (Sandbox Code Playgroud)

apache ssl tomcat httpclient ssl-certificate

2
推荐指数
1
解决办法
2万
查看次数

libphonenumber javascript - 验证

我是javascript开发的新手.我需要的是验证手机号码,以便在一段时间后启用短信.

我发现的是googles libphonenumber:https://code.google.com/p/libphonenumber/

我认为在源干线中有一个已编译的javascript文件(closure-compiler),我可以简单地执行以下操作:

function buildAndValidatePhone(phoneNumber, countryCode) {
    var strIntlNumber = "invalid";

    try {
        var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
        var regionCode = phoneUtil.getRegionCodeForCountryCode(countryCode);
        var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode);

        if (phoneUtil.isValidNumber(number)) {
            var PNT = i18n.phonenumbers.PhoneNumberType;
            var numberType = phoneUtil.getNumberType(number);

            if (numberType == PNT.MOBILE) {
                var PNF = i18n.phonenumbers.PhoneNumberFormat;
                strIntlNumber = phoneUtil.format(number, PNF.E164);
                strIntlNumber = strIntlNumber.replace('+','');
            }
        }
    }
    catch(ex) {
    console.log(ex);
    }

    return strIntlNumber;
};
Run Code Online (Sandbox Code Playgroud)

但我得到了ReferenceError- 要么i18n没有定义,要么PhoneNumberUtil没有定义.如何使用已编译的库?我错过了什么或者我需要用库编译我的代码吗?

我要感谢任何帮助,提前谢谢!

javascript validation libphonenumber

2
推荐指数
1
解决办法
5672
查看次数